"use strict";
{
    //声明一个类之后, 同时会产生一个类型
    class Person {
        // 方法
        constructor(name, age) {
            this.type = '人';
            this.name = name;
            this.age = age;
        }
        //介绍
        intro() {
            console.log(this.name + this.age);
        }
        //返回 name 属性的值
        getName() {
            return this.name;
        }
    }
    class Student extends Person {
        //子类如果包含了构造方法, 必须要调用 super 函数
        constructor(name, age) {
            super(name, age);
        }
        learn() {
            console.log('可以学习....');
        }
        play() {
            console.log('玩耍....');
        }
    }
    //实例化
    let pangbo = new Person('庞博', 28);
    // console.log(pangbo.getName());
    // console.log(pangbo);
    //实例化
    // let stu = new Student('张伟', 18);
    // stu.play();
    // console.log(stu);
    //类型注解
    // let me:Person = new Person('xiaohigh', 30);
    // class C{
    //   name: string = 'xxx';
    //   test: number = 123;
    // }
    // let c: C = new C();
}
{
    //声明一个类
    class Parent {
        constructor() {
            this.a = 'aaa';
            this.b = 'bbb';
            this.c = 'ccc';
        }
        //测试方法
        selfTest() {
            // console.log(this.a);
            // console.log(this.b);
            console.log(this.c);
        }
        getC() {
            //判断
        }
    }
    class Son extends Parent {
        test() {
            // console.log(this.a);
            // console.log(this.b);
            // console.log(this.c);//属性“c”为私有属性，只能在类“Parent”中访问
        }
    }
    //实例化 Son 对象
    let s = new Son();
    //输出测试
    //类外部
    // console.log(s.a);
    // console.log(s.b);//属性“b”受保护，只能在类“Parent”及其子类中访问
    // console.log(s.c); //属性“c”为私有属性，只能在类“Parent”中访问
    //子类
    s.test();
    //自身类内部方法
    s.selfTest();
}
